With the increasing versatility of computing devices, configuring a device to adapt for different operating environments is becoming more and more sophisticated. For example, a device may present different user interfaces for different users, connect to different remote services at different locations, or customize parameters of an application depending on a user's preference or device administrator's requirements, etc. However, complexity in configuring the device also increases significantly at the same time and makes it harder and harder to use the device.
Typically, a configuration file may be preinstalled in a device to specify default settings for applications installed in the device. Optionally, a user interface may be provided to allow manual change of settings stored in the device. As the complexity of available settings grows, however, manual configuration may become too tedious a task for regular device users. Furthermore, most users may not be in possession of special expertise required in configuring certain applications. For managed services provided to a device, enforcing central policies may also become too costly using manual configurations.
As such, traditional configuration management to adapt operations of a device to support modern usage environments may render the device cumbersome to use, costly to maintain, difficult to manage and/or unusable for other problems.